--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / messages / ConversationPeerHeader.vue
Displaying Raw • Download
meshchatx/src/frontend/components/messages/ConversationPeerHeader.vue 06710bcd69cd22e9660aa555b44e7d1ca87d2d60 (06710bcd) Text, 9.77 KB
T8b949e<!-- SPDX-License-Identifier: 0BSD -->
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"relative z-20 flex flex-wrap items-center gap-y-2 px-3 sm:px-4 py-3 border-b border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"shrink-0 mr-3"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3selectedPeerTb4b4b4.Te6edf3contact_imageTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_name Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3selectedPeerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"shrink-0"
Tb4b4b4:Te6edf3icon-styleTff7b72=Ta5d6ff"Te6edf3messageIconStyleTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center cursor-pointer min-w-0 group" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'edit-display-name'Tb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72!= Tff7b72nullTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mr-1.5 text-gray-500 dark:text-zinc-400 group-hover:text-gray-700 dark:group-hover:text-zinc-200 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.custom_display_name'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"tag-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 truncate max-w-[120px] sm:max-w-sm text-base"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3selectedPeerTb4b4b4.Te6edf3display_nameTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3selectedPeerTb4b4b4.Te6edf3display_name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-400 mt-0.5 flex items-center gap-2 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer hover:text-blue-500 transition-colors truncate max-w-[120px] sm:max-w-none shrink-0"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'copy-hash'Tb4b4b4, Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3destinationDisplay Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3selectedPeerPath Tff7b72||
Te6edf3selectedPeerSignalMetricsTff7b72?Tb4b4b4.Te6edf3snr Tff7b72!= Tff7b72null Tff7b72||
Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3stamp_cost Tff7b72||
Te6edf3lxmfHasOutboundTicket
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 min-w-0"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-300 dark:text-zinc-700 shrink-0"Tb4b4b4>•Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 truncate"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerPathTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center cursor-pointer hover:text-gray-700 dark:hover:text-zinc-200 shrink-0"
Te6edf3titleTff7b72=Ta5d6ff"Path information"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'destination-path-click'Tb4b4b4, Te6edf3selectedPeerPathTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerPathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff0 Tff7b72|| Te6edf3selectedPeerPathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1Ta5d6ff"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"messages.direct"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-elseTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.hops_away"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3selectedPeerPathTb4b4b4.Te6edf3hops Tb4b4b4}Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerSignalMetricsTff7b72?Tb4b4b4.Te6edf3snr Tff7b72!= Tff7b72nullTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-300 dark:text-zinc-700 opacity-50"Tb4b4b4>•Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer hover:text-gray-700 dark:hover:text-zinc-200"
Te6edf3titleTff7b72=Ta5d6ff"Signal quality"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'signal-metrics-click'Tb4b4b4, Te6edf3selectedPeerSignalMetricsTb4b4b4)Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.snr"Tb4b4b4, Tb4b4b4{ Te6edf3snrTff7b72: Te6edf3selectedPeerSignalMetricsTb4b4b4.Te6edf3snr Tb4b4b4}Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3stamp_cost Tff7b72|| Te6edf3lxmfHasOutboundTicketTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1 shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-300 dark:text-zinc-700 opacity-50"Tb4b4b4>•Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3lxmfHasOutboundTicketTa5d6ff"
Te6edf3icon-nameTff7b72=Ta5d6ff"ticket-confirmation"
Te6edf3classTff7b72=Ta5d6ff"size-3.5 shrink-0"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3lxmfStampTicketValid
Tff7b72? Ta5d6ff'text-emerald-600 dark:text-emerald-400'
Tff7b72: Ta5d6ff'text-amber-600 dark:text-amber-500'
Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"
Te6edf3lxmfStampTicketValid
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'messages.stamp_ticket_valid'Tb4b4b4, Tb4b4b4{
Te6edf3expiresTff7b72: Te6edf3lxmfStampTicketExpiresRelativeTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'messages.stamp_ticket_expired'Tb4b4b4)
Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3stamp_costTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"cursor-pointer hover:text-gray-700 dark:hover:text-zinc-200"
Te6edf3titleTff7b72=Ta5d6ff"LXMF stamp requirement"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'stamp-info-click'Tb4b4b4, Te6edf3selectedPeerLxmfStampInfoTb4b4b4)Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.stamp_cost"Tb4b4b4, Tb4b4b4{ Te6edf3costTff7b72: Te6edf3selectedPeerLxmfStampInfoTb4b4b4.Te6edf3stamp_cost Tb4b4b4}Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-auto flex items-center gap-0.5 sm:gap-1.5 min-w-0 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72ConversationDropDownMenu
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerTa5d6ff"
Tb4b4b4:Te6edf3peerTff7b72=Ta5d6ff"Te6edf3selectedPeerTa5d6ff"
Tb4b4b4:Te6edf3compactTff7b72=Ta5d6ff"Te6edf3compactPeerActionsTa5d6ff"
Tb4b4b4:Te6edf3has-failed-messagesTff7b72=Ta5d6ff"Te6edf3hasFailedOrCancelledMessagesTa5d6ff"
Tb4b4b4@Te6edf3conversation-deletedTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'conversation-deleted'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3set-custom-display-nameTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'edit-display-name'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3popoutTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'popout'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3retry-failedTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'retry-failed'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3open-telemetry-historyTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'open-telemetry-history'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3start-callTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'start-call'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3share-contactTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'share-contact'Tb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72IconButton Te6edf3titleTff7b72=Ta5d6ff"Close" Te6edf3classTff7b72=Ta5d6ff"shrink-0" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'close'Tb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-6 sm:size-7" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3dayjs Tff7b72from Ta5d6ff"dayjs"Tb4b4b4;
Tff7b72import Te6edf3relativeTime Tff7b72from Ta5d6ff"dayjs/plugin/relativeTime"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3IconButton Tff7b72from Ta5d6ff"../IconButton.vue"Tb4b4b4;
Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ConversationDropDownMenu Tff7b72from Ta5d6ff"./ConversationDropDownMenu.vue"Tb4b4b4;
Te6edf3dayjsTb4b4b4.Te6edf3extendTb4b4b4(Te6edf3relativeTimeTb4b4b4)Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"ConversationPeerHeader"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3IconButtonTb4b4b4,
Te6edf3LxmfUserIconTb4b4b4,
Te6edf3ConversationDropDownMenuTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3selectedPeerTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3compactPeerActionsTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3hasFailedOrCancelledMessagesTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3messageIconStyleTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerPathTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerSignalMetricsTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerLxmfStampInfoTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTff7b72: Tb4b4b4[
Ta5d6ff"edit-display-name"Tb4b4b4,
Ta5d6ff"copy-hash"Tb4b4b4,
Ta5d6ff"destination-path-click"Tb4b4b4,
Ta5d6ff"signal-metrics-click"Tb4b4b4,
Ta5d6ff"stamp-info-click"Tb4b4b4,
Ta5d6ff"conversation-deleted"Tb4b4b4,
Ta5d6ff"popout"Tb4b4b4,
Ta5d6ff"retry-failed"Tb4b4b4,
Ta5d6ff"open-telemetry-history"Tb4b4b4,
Ta5d6ff"start-call"Tb4b4b4,
Ta5d6ff"share-contact"Tb4b4b4,
Ta5d6ff"close"Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3destinationDisplayTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lxmfHasOutboundTicketTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3outbound_ticket_expiry Tff7b72!= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lxmfStampTicketExpiryMsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3e Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfoTff7b72?Tb4b4b4.Te6edf3outbound_ticket_expiryTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3e Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3n Tff7b72* T79c0ff1000Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lxmfStampTicketValidTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ms Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lxmfStampTicketExpiryMsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ms Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3ms Tff7b72> Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lxmfStampTicketExpiresRelativeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ms Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lxmfStampTicketExpiryMsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ms Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3dayjsTb4b4b4(Te6edf3msTb4b4b4)Tb4b4b4.Te6edf3fromNowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────